package com.huike.review.service.impl;

import com.huike.common.core.domain.AjaxResult;
import com.huike.common.core.page.PageDomain;
import com.huike.common.core.page.TableDataInfo;
import com.huike.common.exception.CustomException;
import com.huike.common.utils.bean.BeanUtils;
import com.huike.review.pojo.Review;
import com.huike.review.service.ReviewService;
import com.huike.review.mapper.MybatisReviewMapper;
import com.huike.review.vo.MybatisReviewVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;


/**
 * mybatis复习使用的业务层
 * 注意该业务层和我们系统的业务无关，主要是让同学们快速熟悉系统的
 */
@Service
public class ReviewServiceImpl implements ReviewService {

    @Autowired
    private MybatisReviewMapper reviewMapper;


    /**
     * =========================================================保存数据的方法=============================================
     */
    @Override
    public AjaxResult savaData(Review review) {
        //1.参数验证
        if (review == null) return AjaxResult.error("操作失败");

        //2.调用添加的方法
        int insert = reviewMapper.insert(review);

        //3.返回结果
        return AjaxResult.success("成功添加:" + insert + "条数据成功");
    }


    /**=========================================================删除数据=============================================*/
    /**
     * 删除人员的方法
     */
    @Override
    public AjaxResult removeById(Long id) {
        //1.参数校验
        if (id == null) return AjaxResult.error("参数异常");

        //2.是否能够删除？？？---可以-调用删除数据的方法
        int i = reviewMapper.deleteById(id);

        //3.根据返回值确定操作结果，返回前端
        return i > 0 ? AjaxResult.success("删除数据成功") : AjaxResult.error("删除数据失败");
    }

    /**=========================================================修改数据=============================================*/
    /**
     * 修改人员的方法
     */
    @Override
    public AjaxResult updateReview(Review review) {
        //1.参数校验
        if (review == null) return AjaxResult.error("参数异常");

        //2.补全修改参数
        review.setUpdateTime(LocalDateTime.now());

        //3.调用修改方法
        int i = reviewMapper.update(review);

        //4.返回结果
        return i > 0 ? AjaxResult.success("修改人员成功") : AjaxResult.error("修改人员失败");
    }


    /**=========================================================查询数据的方法=============================================*/
    /**
     * 根据id查询人员信息的方法
     */
    @Override
    public AjaxResult findById(Long id) {
        //1.参数校验
        if (id == null) return AjaxResult.error("参数异常");

        //2.根据id查询数据
        Review review = reviewMapper.findById(id);

        //3.封装返回数据返回到前端
        return AjaxResult.success(review);
    }

    /**
     * 分页查询的方法
     */
    @Override
    public List<Review> findPage() {
        return reviewMapper.findPage();
    }

}
